﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Lavanderia.BL;
using Lavanderia.Entities;
using Microsoft.Practices.Unity;

namespace Lavanderia.UI
{
    public partial class FrmMttoEmpresa : Form
    {
        [Dependency]
        public IEmpresaBL empresaBl { get; set; }
        private bool isNew;
        public FrmMttoEmpresa()
        {
            InitializeComponent();
            this.BuilUp();
        }

        public void NuevaEmpresa()
        {
            isNew = true;
            empresaBindingSource.AddNew();

        }

        public Empresa _empresa { get; set; }

        public void EditEmpresa()
        {
            isNew = false;
            empresaBindingSource.DataSource = _empresa;
            razonSocialTextBox.ReadOnly = false;
            direccionTextBox.ReadOnly = false;
            telefonoTextBox.ReadOnly = false;
            comentarioTextBox.ReadOnly = false;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            var empresa = empresaBindingSource.Current as Empresa;

            var msg = "ERROR";

            if (empresa!=null)
            {
                if (isNew)
                {
                    try
                    {
                        empresa.Ruc = rucTextBox.Text.ToUpper();
                        empresa.RazonSocial = razonSocialTextBox.Text.ToUpper();
                        empresa.Direccion = direccionTextBox.Text.ToUpper();
                        empresa.Telefono = telefonoTextBox.Text.ToUpper();
                        empresa.Comentario = comentarioTextBox.Text.ToUpper();
                        empresaBl.AddEmpresa(empresa);
                        MessageBox.Show("Registro Correcto", "Registro",
                       MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        msg = ex.Message;
                        MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                if(isNew ==false)
                {
                    try
                    {
                        empresa.Ruc = rucTextBox.Text.ToUpper();
                        empresa.RazonSocial = razonSocialTextBox.Text.ToUpper();
                        empresa.Direccion = direccionTextBox.Text.ToUpper();
                        empresa.Telefono = telefonoTextBox.Text.ToUpper();
                        empresa.Comentario = comentarioTextBox.Text.ToUpper();
                        empresaBl.UpdateEmpresa(empresa);
                        
                        MessageBox.Show("Modificación Correcta", "Registro",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        msg = ex.Message;
                        MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }   
                }
            }
        }

        private void btnVerificarDni_Click(object sender, EventArgs e)
        {
            if (rucTextBox.Text.Length == 11)
            {
                existeRuc();
            }
            else
            {
                MessageBox.Show("Longitud de RUC Incorrecta");
            }
        }

        private void btnVerificarDni_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rucTextBox.Text.Length == 11)
                {
                    existeRuc();
                }
                else
                {
                    MessageBox.Show("Longitud de RUC Incorrecta");
                }
            }
        }
        //verificar existencia del cliente por medio del RUC
        public void existeRuc()
        {
            var empresaRuc = empresaBl.GetAllFromEmpresaByDni(rucTextBox.Text);

            if (rucTextBox.Text.Length != 0)
            {
                if (rucTextBox.Text.Length == 11)
                {
                    if (empresaRuc != null)
                    {
                        
                        empresaBindingSource.DataSource = empresaRuc;
                        
                        MessageBox.Show("Cliente Existente", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Close();
                    }
                    else
                    {
                        razonSocialTextBox.ReadOnly = false;
                        direccionTextBox.ReadOnly = false;
                        telefonoTextBox.ReadOnly = false;
                        comentarioTextBox.ReadOnly = false;
                        

                        
                    }
                }
                else
                {
                    MessageBox.Show("Longitud de RUC Incorrecta", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("Ingrese un RUC", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void FrmMttoEmpresa_Load(object sender, EventArgs e)
        {

        }

        private void rucTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rucTextBox.Text.Length == 11)
                {
                    existeRuc();
                }
                else
                {
                    MessageBox.Show("Longitud de RUC Incorrecta");
                }
            }
        }

        private void rucTextBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == Keys.Tab)
            {
                if (rucTextBox.Text.Length == 11)
                {
                    existeRuc();
                }
                else
                {
                    MessageBox.Show("Longitud de RUC Incorrecta");
                }
            }
        }

        private void rucTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

    }
}
